﻿using Mapster;

namespace Zhp.Api.Mapster
{
    public class MapsterRegister// : IRegister
    {
        public static void Register()
        {
            //自定义映射 会覆盖存在的
            // 配置从 string 到 long 的映射规则
            TypeAdapterConfig<string, long>.NewConfig().MapWith(src => TryParseLong(src));

            // 配置从 string 到 long? 的映射规则
            TypeAdapterConfig<string, long?>.NewConfig().MapWith(src => TryParseNullLong(src));

            // 配置从 long 到 string 的映射规则
            TypeAdapterConfig<long, string>.NewConfig().MapWith(src => src.ToString());

            // 配置从 long? 到 string 的映射规则
            TypeAdapterConfig<long?, string>.NewConfig().MapWith(src => src.HasValue ? src.Value.ToString() : null);
        }

        // 辅助方法：尝试将字符串解析为 long
        private static long TryParseLong(string src)
        {
            if(long.TryParse(src, out long result))
            {
                return result;
            }
            return 0;
        }

        // 辅助方法：尝试将字符串解析为 long?
        private static long? TryParseNullLong(string src)
        {
            if (long.TryParse(src, out long result))
            {
                return result;
            }
            return null;
        }
    }
}
